using System;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Common;
using DataAccess;
using Microsoft.ApplicationBlocks.Data;

namespace BusinessRules
{
    public class SigProgramaZonasGeograficasEjecucion
    {

        #region Params

        private const String SPZE_ID_PARAM = "@SPZE_ID";
        private const String SPZ_ID_PARAM = "@SPZ_ID";
        private const String PRG_ID_PARAM = "@PRG_ID";
        private const String PRG_CANTIDAD_PARAM = "@PRG_CANTIDAD";
        private const String PRG_DESCRIPCION_PARAM = "@PRG_DESCRIPCION";
        private const String PRG_ANO_PARAM = "@PRG_ANO";
        private const String PRG_OBSERVACIONES_PARAM = "@PRG_OBSERVACIONES";
        private const String PRG_VALOR_EJECUCION_PARAM = "@PRG_VALOR_EJECUCION";
        private const String PRG_POBLACION_BENEFICIADA_PARAM = "@PRG_POBLACION_BENEFICIADA";
        private const String ZON_ID_PARAM = "@ZON_ID";
        private const String RES_ID_PARAM = "@RES_ID";

        private const String ZON_PADRE_ID_PARAM = "@ZON_PADRE_ID";
        private const String ACC_ID_PARAM = "@ACC_ID";

        #endregion

        #region Variables

        private string _CadenaConexion;

        #endregion

        #region CadenaConexion

        public string CadenaConexion
        {
            get { return _CadenaConexion; }
            set { _CadenaConexion = value; }
        }

        #endregion

        #region SigProgramaZonasGeograficas

        public SigProgramaZonasGeograficasEjecucion(string strCadenaConecxion)
        {
            CadenaConexion = strCadenaConecxion;
        }

        #endregion

        #region ConsultarProgramaZonasGeograficasEjecucionSpzId

        public SigProgramaZonasGeograficasEjecucionData ConsultarProgramaZonasGeograficasEjecucionSpzId(String strSpzID)
        {
            SqlParameter param1 = new SqlParameter(SPZ_ID_PARAM, strSpzID);
            SqlParameter[] parameters = { param1 };
            SigProgramaZonasGeograficasEjecucionData objSigProgramaZonasGeograficasEjecucionData = new SigProgramaZonasGeograficasEjecucionData();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION_SPZ_ID", objSigProgramaZonasGeograficasEjecucionData, parameters);
            return objSigProgramaZonasGeograficasEjecucionData;
        }

        #endregion

        #region ConsultarProgramaZonasGeograficasEjecucionSpzeId

        public SigProgramaZonasGeograficasEjecucionData ConsultarProgramaZonasGeograficasEjecucionSpzeId(String strSpzID)
        {
            SqlParameter param1 = new SqlParameter(SPZE_ID_PARAM, strSpzID);
            SqlParameter[] parameters = { param1 };
            SigProgramaZonasGeograficasEjecucionData objSigProgramaZonasGeograficasEjecucionData = new SigProgramaZonasGeograficasEjecucionData();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION_SPZE_ID", objSigProgramaZonasGeograficasEjecucionData, parameters);
            return objSigProgramaZonasGeograficasEjecucionData;
        }

        #endregion

        #region AdicionarProgramaZonasGeograficasEjecucion

        public decimal AdicionarProgramaZonasGeograficasEjecucion(SigProgramaZonasGeograficasEjecucionData datos, params SqlTransaction[] objTransaction)
        {
            decimal decIdentificador = 0;
            try
            {
                foreach (DataRow row in datos.Rows)
                {
                    SqlParameter param1 = new SqlParameter(SPZE_ID_PARAM, SqlDbType.Decimal);
                    param1.Direction = ParameterDirection.Output;
                    SqlParameter param2 = new SqlParameter(SPZ_ID_PARAM, row[SigProgramaZonasGeograficasEjecucionData.SPZ_ID_FIELD]);

                    SqlParameter param3 = new SqlParameter(PRG_CANTIDAD_PARAM,
                                                           row[SigProgramaZonasGeograficasEjecucionData.PRG_CANTIDAD_FIELD]);
                    SqlParameter param4 = new SqlParameter(PRG_DESCRIPCION_PARAM,
                                                           row[SigProgramaZonasGeograficasEjecucionData.PRG_DESCRIPCION_FIELD]);
                    SqlParameter param5 = new SqlParameter(PRG_ANO_PARAM, row[SigProgramaZonasGeograficasEjecucionData.PRG_ANO_FIELD]);
                    SqlParameter param6 = new SqlParameter(PRG_OBSERVACIONES_PARAM,
                                                           row[SigProgramaZonasGeograficasEjecucionData.PRG_OBSERVACIONES_FIELD]);

                    SqlParameter param7;
                    if (row[SigProgramaZonasGeograficasData.PRG_VALOR_EJECUCION_FIELD] == null || row[SigProgramaZonasGeograficasEjecucionData.PRG_VALOR_EJECUCION_FIELD].ToString() == "")
                        param7 = new SqlParameter(PRG_VALOR_EJECUCION_PARAM, DBNull.Value);
                    else
                        param7 = new SqlParameter(PRG_VALOR_EJECUCION_PARAM, row[SigProgramaZonasGeograficasEjecucionData.PRG_VALOR_EJECUCION_FIELD]);

                    SqlParameter param8 = new SqlParameter(PRG_POBLACION_BENEFICIADA_PARAM,
                                                           row[SigProgramaZonasGeograficasEjecucionData.PRG_POBLACION_BENEFICIADA_FIELD]);
                    SqlParameter param9;
                    if (row[SigProgramaZonasGeograficasEjecucionData.ZON_ID_FIELD] == null || row[SigProgramaZonasGeograficasEjecucionData.ZON_ID_FIELD].ToString() == "")
                        param9 = new SqlParameter(ZON_ID_PARAM, DBNull.Value);
                    else
                        param9 = new SqlParameter(ZON_ID_PARAM, row[SigProgramaZonasGeograficasEjecucionData.ZON_ID_FIELD]);

                    SqlParameter param10;
                    if (row[SigProgramaZonasGeograficasEjecucionData.RES_ID_FIELD] == null || row[SigProgramaZonasGeograficasEjecucionData.RES_ID_FIELD].ToString() == "")
                        param10 = new SqlParameter(RES_ID_PARAM, DBNull.Value);
                    else
                        param10 = new SqlParameter(RES_ID_PARAM, row[SigProgramaZonasGeograficasEjecucionData.RES_ID_FIELD]);




                    SqlParameter[] parameters = {
                                                    param1, param2, param3, param4, param5, param6, param7, param8, param9,
                                                    param10
                                                };

                    if (objTransaction.Length == 0)
                    {
                        SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure,
                                                  "PAS_ADICIONAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION", parameters);
                    }
                    else
                    {
                        SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure,
                                                  "PAS_ADICIONAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION", parameters);
                    }

                    decIdentificador = decimal.Parse(param1.Value.ToString());
                }
                return (decIdentificador);

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ADICIONAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            }

        }

        #endregion

        #region AdicionarProgramaZonasGeograficasEjecucion

        public decimal ActualizarProgramaZonasGeograficasEjecucion(SigProgramaZonasGeograficasEjecucionData datos, params SqlTransaction[] objTransaction)
        {
            decimal decIdentificador = 0;
            try
            {
                foreach (DataRow row in datos.Rows)
                {
                    SqlParameter param1 = new SqlParameter(SPZE_ID_PARAM, row[SigProgramaZonasGeograficasEjecucionData.SPZE_ID_FIELD]);

                    SqlParameter param2 = new SqlParameter(SPZ_ID_PARAM, row[SigProgramaZonasGeograficasEjecucionData.SPZ_ID_FIELD]);

                    SqlParameter param3 = new SqlParameter(PRG_CANTIDAD_PARAM,
                                                           row[SigProgramaZonasGeograficasEjecucionData.PRG_CANTIDAD_FIELD]);
                    SqlParameter param4 = new SqlParameter(PRG_DESCRIPCION_PARAM,
                                                           row[SigProgramaZonasGeograficasEjecucionData.PRG_DESCRIPCION_FIELD]);
                    SqlParameter param5 = new SqlParameter(PRG_ANO_PARAM, row[SigProgramaZonasGeograficasEjecucionData.PRG_ANO_FIELD]);
                    SqlParameter param6 = new SqlParameter(PRG_OBSERVACIONES_PARAM,
                                                           row[SigProgramaZonasGeograficasEjecucionData.PRG_OBSERVACIONES_FIELD]);

                    SqlParameter param7;
                    if (row[SigProgramaZonasGeograficasData.PRG_VALOR_EJECUCION_FIELD] == null || row[SigProgramaZonasGeograficasEjecucionData.PRG_VALOR_EJECUCION_FIELD].ToString() == "")
                        param7 = new SqlParameter(PRG_VALOR_EJECUCION_PARAM, DBNull.Value);
                    else
                        param7 = new SqlParameter(PRG_VALOR_EJECUCION_PARAM, row[SigProgramaZonasGeograficasEjecucionData.PRG_VALOR_EJECUCION_FIELD]);

                    SqlParameter param8 = new SqlParameter(PRG_POBLACION_BENEFICIADA_PARAM,
                                                           row[SigProgramaZonasGeograficasEjecucionData.PRG_POBLACION_BENEFICIADA_FIELD]);
                    SqlParameter param9;
                    if (row[SigProgramaZonasGeograficasEjecucionData.ZON_ID_FIELD] == null || row[SigProgramaZonasGeograficasEjecucionData.ZON_ID_FIELD].ToString() == "")
                        param9 = new SqlParameter(ZON_ID_PARAM, DBNull.Value);
                    else
                        param9 = new SqlParameter(ZON_ID_PARAM, row[SigProgramaZonasGeograficasEjecucionData.ZON_ID_FIELD]);

                    SqlParameter param10;
                    if (row[SigProgramaZonasGeograficasEjecucionData.RES_ID_FIELD] == null || row[SigProgramaZonasGeograficasEjecucionData.RES_ID_FIELD].ToString() == "")
                        param10 = new SqlParameter(RES_ID_PARAM, DBNull.Value);
                    else
                        param10 = new SqlParameter(RES_ID_PARAM, row[SigProgramaZonasGeograficasEjecucionData.RES_ID_FIELD]);




                    SqlParameter[] parameters = {
                                                    param1, param2, param3, param4, param5, param6, param7, param8, param9,
                                                    param10
                                                };

                    if (objTransaction.Length == 0)
                    {
                        SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure,
                                                  "PAS_ACTUIALIZAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION", parameters);
                    }
                    else
                    {
                        SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure,
                                                  "PAS_ACTUIALIZAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION", parameters);
                    }

                    decIdentificador = decimal.Parse(param1.Value.ToString());
                }
                return (decIdentificador);

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ACTUIALIZAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            }

        }

        #endregion

        #region EliminarProgramasZonasGeograficasEjecucion

        public void EliminarProgramasZonasGeograficasEjecucion(string parSPZE_ID, params SqlTransaction[] objTransaction)
        {
            try
            {

                SqlParameter param1 = new SqlParameter(SPZE_ID_PARAM, parSPZE_ID);
                SqlParameter[] parameters = { param1 };
                if (objTransaction.Length == 0)
                {
                    SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION", parameters);
                }
                else
                {
                    SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION", parameters);
                }

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ELIMINAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            }
        }




        #endregion

        public void EliminarProgramasZonasGeograficasEjecucionSPZ(string parSPZ_ID, params SqlTransaction[] objTransaction)
        {
            try
            {

                SqlParameter param1 = new SqlParameter(SPZ_ID_PARAM, parSPZ_ID);
                SqlParameter[] parameters = { param1 };
                if (objTransaction.Length == 0)
                {
                    SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION_SPZ_ID", parameters);
                }
                else
                {
                    SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION_SPZ_ID", parameters);
                }

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ELIMINAR_SIG_PROGRAMAS_BAS_ZONAS_GEOGRAFICAS_EJECUCION_SPZ_ID"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            }
        }


    }
}
